Unter Polymorphismus versteht man ...
die Fähigkeit einer Variablen zur Laufzeit auf Objekte beliebigem Typs verweisen zu können
die Fähigkeit einer Prozedur Argumente verschiedener Typen entgegennehmen zu können.
In beiden Fällen gibt es Situationen, in denen erst unmittelbar vor einem Prozeduraufruf entschieden werden kann, welche Prozedur ausgeführt werden soll. Das folgenden Beispiel zeigt eine solche Situation:
Klassenmodul cTestA
Public Sub zeige() MsgBox "Ich bin ein Objekt vom Typ cTestA" End Sub
Klassenmodul cTestB
Public Sub zeige() MsgBox "Ich bin ein Objekt vom Typ cTestB" End Sub
Standardmodul Test
Dim Obj As Object
If InputBox("Wählen Sie A oder B") = "A" Then
Set Obj = New cTestA
Else
Set Obj = New cTestB
End If
Obj.zeige
Die Klassen cTestA und cTestBbesitzen beide eine Methode zeige(), die verschiedene Meldungen auf dem Bildschirm ausgeben. Die Testprozedur vereinbart eine Objektvariable des allgemeinen Objekttyps Object. Zur Laufzeit wird ihr entweder eine Instanz der ersten oder der zweiten Klasse zugewiesen. Damit steht erst unmittelbar vor Ausführung der letzten Programmzeile fest, welche der beiden zeige()-Methoden ausgeführt werden soll. Man spricht deshalb von später Bindung.
Object sollte nur verwendet werden, wenn Polymorphismus ausdrücklich erwünscht ist. Bei spezifischen Objekttypen kann der Übersetzer bereits zur Übersetzungszeit entscheiden, welche Prozedur ausgeführt werden soll. Man spricht deshalb von früher Bindung. Erstens ist die frühe Bindung effizienter als die späte, und zweitens werden beim Arbeiten mit spezifischen Objekttypen ungültige Prozeduraufrufe bereits zur Übersetzungszeit gemeldet.